Virtual machine technology, which has been used for decades to divide large mainframe computers into smaller virtual chunks, is becoming increasingly important in distributed IT environments. In particular, many efforts are currently underway to increase equipment utilization, improve performance, and simplify system management, by running server processes in virtual machines of various kinds. One key enabling technology for these improvements is the process of “cloning” a virtual machine to create multiple further virtual machines based on it. Cloning involves first creating an image of a virtual machine by recording the contents of its filesystem(s) and/or memory address space. Then a new virtual machine can be started by making a copy of the recorded image and modifying it as necessary for the environment in which the new virtual machine will run, and starting up a new virtual machine based on the modified copy.
The original virtual machine image and its associated metadata are called a “template”, and the process of modifying the template as required for a new environment is called “customization”. There are many challenging aspects to template customization. Since most current software artifacts (operating systems, middleware, applications, and so on) were written without virtualization in mind, each piece of software may require different kinds of customization. For instance, it is common for network-aware software to record the hostname of the current machine in a data file in some proprietary format, and to assume that that hostname does not change.
If a virtual machine template is made from a virtual machine that includes such a piece of software, then customizing that template to allow the creation of a virtual machine that can function correctly with a different hostname can require reverse-engineering the software, determining where it stores the hostname, and explicitly patching that file in the template's associated filesystem-image to include the new hostname instead of the old one. Other kinds of customization have analogous problems.
Therefore a need exists to overcome the problems with the prior art as discussed above.